In semiconductor manufacturing, devices, such as transistors, are produced on a semiconductor wafer and interconnected to form integrated circuits (ICs). The wafer is cut up into individual dies that carry the ICs and then dies are then packaged and sold. Forming the devices typically includes numerous steps of photolithography that provide patterns on the wafer surface.
Photolithography starts with forming a photosensitive film on a wafer, exposing the film with a pattern by projecting radiation through a mask to chemically alter the film, and developing away exposed or unexposed portions of the film so a patterned film remains on the wafer. One or more masks are used to create the patterns in the film and the masks are designed and optimized using software tools.
The masks are designed based on the desired pattern and, in part, on the characteristics of the photolithography equipment, including the optics and the illumination source. The masks are designed using computer programs and to make increasingly smaller more complex circuit components a design can contain many layers both directly drawn and synthesized and hence numerous masks. Each layer is optimized through various compensation techniques. For critical layers one of the processes is commonly referred to as Optical Proximity Correction (OPC).
Depending on the objectives and complexity of the layers, the optimizations performed on the design can be computationally expensive and not viable to perform on a single computer. In order to save time and cost clusters of computers are used. The mask design is partitioned to break the layout into smaller pieces so that each partition can be processed, and distributed efficiently. Various partitioning schemes can be designed to tradeoff maximizing throughput or accuracy, for example by only considering artifacts along specific structure or partition boundaries. After each of the data partitions are distributed to different computing nodes, and modified, then the modified results are collected to be merged into a final output form. However, because each data partition is processed independently, possibly using an iterative or optimization type algorithm, there are mis-matches between the different partitions where they come together. There may also be artifacts along the partition border interfaces. These occur where each partition was processed without knowledge of the neighboring structures. The mismatches can be repaired manually, but this requires careful work and time.